package com.example.enums.user;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum UserStatus {

    /**
     * - @EnumValue 注解
     * 作用：用于MyBatis-Plus框架，标识枚举字段在数据库中存储的值
     * 在此代码中：value字段使用此注解，表示数据库中存储的是1或0
     * ---
     * - @JsonValue 注解
     * 作用：用于Jackson序列化，指定枚举转换为JSON时使用的值
     * 在此代码中：description字段使用此注解，表示序列化为JSON时输出"正常"或"停用"
     * ---
     * 不使用 @EnumValue
     * MyBatis-Plus无法正确映射枚举与数据库值
     * 数据库可能存储整个枚举对象而非指定字段值
     * 查询时可能出现映射错误
     * ---
     * 不使用 @JsonValue
     * JSON序列化时会输出枚举名称（如"NORMAL"、"DISABLED"）
     * 而不是友好的描述信息（"正常"、"停用"）
     * 前端接收到的数据可读性较差
     */

    NORMAL(0, "正常"),
    DISABLED(1, "停用");

    @EnumValue // 枚举值存储在数据库中
    private final Integer value;
    @JsonValue // 枚举值序列化时返回此字段
    private final String description;

}